A database management system (DBMS) refers to a computer software program which manages a set of files, called a database, and a set of application programs, called transactions. The database files are stored in a data storage device, such as a direct access storage device (DASD), connected to a computer. The files of a database are accessed through names or other identifiable data specified by the user in a prior definition process. In some DBMSs, a database user can update, delete, and retrieve data using an application program that interacts with the DBMS. The application programs are written independent of the specific physical data organization and physical devices. Application programs can be written in a supported common high level programming language. The speed and efficiency by which data can be retrieved from a database depends on how effectively an application programmer is able to use an application programming language.
The IMS database software product from IBM which has been commercially available for many years, is a database manager and a transaction manager. IMS consists of a set of program modules that intercept all requests that an application program makes when accessing data from a database or other terminals. There are two parts to IMS, IMS DB (database) and IMS TM (transaction manager). IMS uses an interface language called DL/I (Data Language/I) for describing the DBMS-requests. The IMS database runs on the MVS (Multiple Virtual Storage) operating system.
An application program that runs on the same operating system as IMS, uses the DL/I language to access the database. In IMS, DL/I is used as a data manipulation language that provides a common high-level interface between an application program and IMS. DL/I uses a set of control blocks to define a database's structure. Control blocks are storage areas used by a computer program to hold control information. The two main control blocks used and established by DL/I are the database description (DBD) and the program specification block (PSB). The database is set up and maintained by these and other blocks.
The DBD describes the complete structure of a database, including how the data is physically stored on the storage device and how that data can be accessed. The DBD also specifies the database name, segment names, segment attributes, relationships, field names and access methods. The DBD is specified through the execution of a set of macro invocations which create a predefined description that is stored for use during program execution. The database has a single physical structure as defined by its DBD. Therefore, an enterprise must create one DBD for each IMS database.
The application programs can have more than one logical view of any one database. The views are defined by the PSB (program specification block) which specify which databases a program can access, the data elements within each database that can be accessed, and the processes that the program can do to those elements. Each logical database is defined and the mapping to the physical database is stored in a program communication block (PCB). A PSB is a set of all PCBs for one program. The PSB identifies which pieces of data an application program can access and in what ways that data can be accessed. The predefined PSB is generated using macro invocations and is stored for reference during program execution. The DBD and PSB are combined by an ACBGEN (access control block) provided by IMS and stored together as an ACB for efficiency reasons.
The DL/I control blocks are typically created by an enterprise's database administrator (DBA). The DBA generates the control blocks that are stored in the computer memory or on the storage device. In that way, the DBA defines the database and also controls who has access to each part of the database and the type of access that is allowed, such as whether a user can query the database, or modify data stored in the database.
When processing application programs, the IMS application program communicates with the DL/I component of IMS through call statements to access the database. Upon receiving a call from the program, the DL/I component references the DBD and PSB control blocks to verify the validity of the request and to obtain descriptive information on the data requested by the program. The DL/I component provides an interface with the program. In IMS, the interpretation of the call from an application program can be qualified by means of qualifier codes or parameters, so that the call parameters are not bound until execution which enables a different-type of record to be retrieved by a call statement.
Currently, DBAs and application programmers can access IMS using Cobol, C, Pascal and PL/I (Programming Language/I) which are compiled languages where the entire program has to be fully translated to machine readable form before it can be executed. Whenever a program is modified, it has to be recompiled before the programmer can determine whether the program will run as it was intended. These languages also have other limitations which make programming for a DBMS time consuming and difficult.
An interpretive programming language called Rexx (Restructured Extended Executor) is available from IBM which runs in TSO/E (Time Sharing Option Extension). The TSO/E provides enhancements to the MVS operating system.
Rexx is an easy-to-learn procedural language that allows for structured programming. Rexx is designed to be independent of the operating system on which it runs, but can also make calls to that system. Rexx can run interpretively, where each source language statement of a Rexx computer program is translated to machine readable form and executed before the next statement is translated and executed. The interpretive Rexx language is highly interactive and permits rapid program development. It can also be compiled for faster execution after it has been determined that the program runs as intended without errors.
Rexx is basically a character manipulation language. The Rexx language can be used for developing applications quickly by using instructions which translate easily to functions or routines expressed in other high-level languages. The Rexx language is also easily interfaced to systems utilities-for display and for data input and output. Rexx can also be used as a command programming language and as a macro language.
There is no software that provides an interface from Rexx on MVS to a DBMS like IMS. There is also no software for emulating an environment within IMS in order to permit execution of a function not provided by IMS.
The use of an interpretive language such as Rexx in a DBMS environment such as IMS would provide a significant increase in application programmer productivity since the speed of writing and debugging Rexx programs is greater than for any other programming languages that currently exist in the IMS environment.
This is particularly significant since the late binding of DL/I calls and the deferred binding of application logic (until interpretation of the Rexx statements at execution time) can create a synergism to permit context-sensitive application function and allows rapid exploration of database content and structure.